luci-app-watchcat: use DynamicList for pinghosts
authorIvan Diaz <[email protected]>
Wed, 15 Oct 2025 14:14:31 +0000 (09:14 -0500)
committerPaul Donald <[email protected]>
Tue, 9 Dec 2025 17:18:42 +0000 (18:18 +0100)
Switch to DynamicList to improve multi-host handling in the UI.

Signed-off-by: Ivan Diaz <[email protected]>
applications/luci-app-watchcat/htdocs/luci-static/resources/view/watchcat.js

index a6c49501d2de41aa9a9ebb3b3ba4ffb801241ada..ed9318d485076ccc662b03760c68eeeca8984a96 100644 (file)
@@ -49,13 +49,23 @@ return view.extend({
                                1 hour would be: <b>1h</b></li><li>1 week would be: <b>7d</b></li><ul>"));
                o.default = '6h';
 
-               o = s.taboption('general', form.Value, 'pinghosts', _('Host To Check'), _(`IP addresses or hostnames to ping.`));
-               o.datatype = 'list(host)';
-               o.default = '8.8.8.8 1.1.1.1';
+               o = s.taboption('general', form.DynamicList, 'pinghosts', _('Hosts To Check'), _(`IP addresses or hostnames to ping.`));
+               o.datatype = 'host';
+               o.default = ['8.8.8.8', '1.1.1.1'];
                o.depends({ mode: "ping_reboot" });
                o.depends({ mode: "restart_iface" });
                o.depends({ mode: "run_script" });
 
+               o.load = function(section_id) {
+                       return (String(this.map.data.get('watchcat', section_id, 'pinghosts') || '')
+                       .trim().split(/\s+/).filter(Boolean))
+               }
+
+               o.write = function(section_id, formvalue) {
+                       this.map.data.set('watchcat', section_id, 'pinghosts',
+                       (formvalue || []).map(v => String(v).trim()).filter(Boolean).join(' '))
+               }
+
                o = s.taboption('general', form.ListValue, 'addressfamily',
                                _('Address family for pinging the host'));
                o.default = 'any';